Snowflake AI & ML ML Functionsのリソースを作る際の権限を確認した

Snowflake AI & ML ML Functionsのリソースを作る際の権限を確認した

スキーマに対して、対応するモデル作成の権限を付与することで、ML Functionsの機能の実行を権限制御できることを確認しました。
Clock Icon2024.10.07

データ事業本部 機械学習チームの鈴木です。

Snowflake AI & MLのML Functionsのリソースについて、いざ細かい権限設定をする際、何の権限があればリソースを作成ができるのか調べたので、非常に簡単にですがご紹介します。

記事執筆時点だと、ML Functionsのリソースは作成結果がSnowsightから見えないと思いますので、細かい権限制御をする際のイメージの参考になりましたら幸いです。

Snowflake AI & MLのML Functionsとは

概要について

Snowflake AI & MLの1機能で、機械学習による分析や推論を担うものとなっています。

https://docs.snowflake.com/en/guides-overview-ml-functions

Snowflakeにおける機械学習の機能としては、ほかにSnowpark MLがありますが、あちらはPythonスクリプトを記述して従来通りモデルを開発していくイメージであるのに対して、ML FunctionsはSQLを使って誰でも簡単に機械学習のモデル開発・利用ができる代わりに、ある程度用途や使い方が決まっているものになります。

現状は以下の機能があります。

  • 異常検出
  • 時系列予測
  • 分類(パブリックプレビュー)
  • 要因分析(パブリックプレビュー)

作成されるリソースについて

ここでは私がよく使う時系列予測機能を例に記載します。

時系列予測機能は、以下のブログで紹介しているように、CREATE SNOWFLAKE.ML.FORECASTを実行することにより、モデルを作成することができます。

https://dev.classmethod.jp/articles/snowflake-cortex-ml-based-functions-time-series-preview/
https://dev.classmethod.jp/articles/snowflake-cortex-ml-based-functions-multi-time-series-preview/

作成したモデルは、SHOW SNOWFLAKE.ML.FORECASTを実行することで確認できますが、その詳細から分かるように、スキーマに作成されています。

スクリーン ショット 2024-10-06 に 16.24.41 午後

よって、時系列予測機能を使ってモデルを作成する場合、スキーマに対するモデル作成の権限が必要になります。

必要な権限について

スキーマにモデル作成の権限が必要であることが分かったので、スキーマの権限のうち、ML Functionsに関するものを確認すると、以下があることが分かります。

  • CREATE SNOWFLAKE.ML.ANOMALY_DETECTION
  • CREATE SNOWFLAKE.ML.CLASSIFICATION
  • CREATE SNOWFLAKE.ML.FORECAST
  • CREATE SNOWFLAKE.ML.TOP_INSIGHTS

https://docs.snowflake.com/en/user-guide/security-access-control-privileges#schema-privileges

次では、時系列予測を例に、CREATE SNOWFLAKE.ML.FORECASTの権限の有無で、時系列予測モデルの作成権限が制御できることを確認します。

やってみた

前提

モデル作成用のデータが必要なため、以下のガイドを参考に、新しく作成したCM_NAYUTSロールで単一時系列予測用のデータが読み出せるビューを作成しておきました。

https://docs.snowflake.com/user-guide/ml-functions/forecasting

スクリーン ショット 2024-10-06 に 16.41.46 午後

このとき、CM_NAYUTSロールには以下の権限をつけておきました。ウェアハウス・データベース・スキーマは事前に作成済みとします。

-- 検証用のWH・データベース・スキーマを使うための権限を追加
GRANT USAGE ON warehouse ML_WH TO ROLE CM_NAYUTS;
GRANT USAGE ON DATABASE DA_ML_DB TO ROLE CM_NAYUTS;
GRANT USAGE ON SCHEMA DA_ML_DB.PRIVILEGE_TEST_SCHEMA TO ROLE CM_NAYUTS;

-- NOTEBOOKから作業したかったので作成権限を追加
GRANT CREATE NOTEBOOK ON SCHEMA DA_ML_DB.PRIVILEGE_TEST_SCHEMA TO ROLE CM_NAYUTS;

-- テーブルおよびビューの作成権限を追加
GRANT CREATE TABLE ON SCHEMA DA_ML_DB.PRIVILEGE_TEST_SCHEMA TO ROLE CM_NAYUTS;
GRANT CREATE VIEW ON SCHEMA DA_ML_DB.PRIVILEGE_TEST_SCHEMA TO ROLE CM_NAYUTS;

CREATE SNOWFLAKE.ML.FORECAST権限付与による挙動の違い

CREATE SNOWFLAKE.ML.FORECAST権限を付与してみて、モデルが作成できるようになることを確認しました。

まず、以下のSQLを実行し、モデルが作れないことを確認しました。作業はNOTEBOOKから実行しています。

CREATE SNOWFLAKE.ML.FORECAST model1(
  INPUT_DATA => TABLE(v1),
  TIMESTAMP_COLNAME => 'date',
  TARGET_COLNAME => 'sales'
);

以下のように権限が不足しているエラーが発生しました。

スクリーン ショット 2024-10-03 に 14.34.58 午後

続いて、以下のようにロールに権限を追加してから、再度モデルを作成し、成功することを確認しました。

GRANT CREATE SNOWFLAKE.ML.FORECAST ON SCHEMA DA_ML_DB.PRIVILEGE_TEST_SCHEMA TO ROLE CM_NAYUTS;

スクリーン ショット 2024-10-03 に 14.38.44 午後

最後に

スキーマに対して、対応するモデル作成の権限を付与することで、ML Functionsの機能の実行を権限制御できることを確認しました。

参考になりましたら幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.